package cn.com.joycode.nimble.trans;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 交易行为
 *
 * @author maxwoods
 */

@AllArgsConstructor
public enum TransAction implements TransActionEnum {

    /**
     * 统一下单
     */
    UNION_ORDER("统一下单"),

    /**
     * 获取表单
     */
    FORM("获取表单"),

    /**
     * 付款
     */
    PAY("付款"),


    /**
     * 退款
     */
    REFUND("退款"),

    /**
     * 交易查询
     */
    QUERY("交易查询"),

    /**
     * 余额查询
     */
    BALANCEQUERY("余额查询"),

    /**
     * 转账
     */
    TRANSFER("转账"),
    
    /**
     * 分账
     */
    LEDGER_LAUNCH("分账"),

    /**
     * 分账查询
     */
    LEDGER_QUERY("分账查询"),

    /**
     * 充值
     */
    RECHARGE("充值"),

    /**
     * 海关定单上送
     */
    CUSTOMSSEND("海关定单上送"),

    /**
     * 海关定单查询
     */
    CUSTOMSQUERY("海关定单查询"),

    /**
     * 客户注册
     */
    CUSTOMERREG("客户注册"),

    /**
     * 客户允值
     */
    CUSTOMERRECHARGE("客户允值"),

    /**
     * 客户消费
     */
    CUSTOMERCONSUME("客户消费"),


    /**
     * 客户鉴权
     */
    CUSTOMERIDENTIFY("客户消费"),


    /**
     * 客户查询
     */
    CUSTOMERQUERY("客户查询");


    @Getter
    private final String desc;

    /**
     * 是否需要结算
     */
    @JsonIgnore
    public boolean isNeedSettle() {
        switch (this) {
            case PAY:
            case REFUND:
            case UNION_ORDER:
                return true;
            default:
                return false;
        }
    }

}